package com.right.health.app.utils;

import android.graphics.Color;
import android.graphics.Paint;

import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.Description;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
import com.github.mikephil.charting.formatter.ValueFormatter;

import java.util.ArrayList;
import java.util.List;

/*
 * Created by hopeliao on 2019-10-09
 *
 */
public class LineChartUtil {

    public static void setupLineChart(LineChart lineChart) {
        //显示边界
        lineChart.setDrawBorders(false);
        lineChart.setDragEnabled(false); //设置是否可以拖拽
        lineChart.setScaleEnabled(false); //设置是否可以缩放
        lineChart.setDoubleTapToZoomEnabled(false);//设置是否可以通过双击屏幕放大图表。默认是true
        //无数据时显示的文字
        lineChart.setNoDataText("暂无数据");
        //图例：得到Lengend
        Legend legend = lineChart.getLegend();
        //隐藏Lengend
        legend.setEnabled(false);
        //隐藏描述
        Description description = new Description();
        description.setEnabled(false);
        description.setTextAlign(Paint.Align.LEFT);
        description.setTextColor(Color.parseColor("#999999"));
        description.setTextSize(10);
//        description.setPosition(0, 0);
        description.setText("血糖(mmol/L)");
        lineChart.setDescription(description);
    }

    public static XAxis getCommonXAxis(LineChart lineChart, int count, int maximun, ValueFormatter valueFormatter) {
        XAxis xAxis = lineChart.getXAxis();
        //设置X轴的位置（默认在上方)
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        //设置X轴坐标之间的最小间隔
        xAxis.setGranularity(1f);
        //设置X轴的刻度数量，第二个参数为true,将会画出明确数量（带有小数点），但是可能值导致不均匀，默认（6，false）
        xAxis.setLabelCount(count, true);
        //设置X轴的值（最小值、最大值、然后会根据设置的刻度数量自动分配刻度显示）
        xAxis.setAxisMinimum(0f);
        xAxis.setAxisMaximum(maximun);
        //不显示网格线
        xAxis.setDrawGridLines(false);
        xAxis.setTextColor(Color.parseColor("#999999"));

        if(valueFormatter != null) {
            xAxis.setValueFormatter(valueFormatter);
        }

        return xAxis;
    }

    public static YAxis getCommonYAxis(LineChart lineChart, int count, int maximun, ValueFormatter valueFormatter) {
        //得到Y轴
        YAxis yAxis = lineChart.getAxisLeft();
        YAxis rightYAxis = lineChart.getAxisRight();
        //设置Y轴是否显示
        rightYAxis.setEnabled(false); //右侧Y轴不显示
        //设置y轴坐标之间的最小间隔
        //不显示网格线
        yAxis.setDrawGridLines(false);
        //设置Y轴坐标之间的最小间隔
        yAxis.setGranularity(1);
        //设置y轴的刻度数量
        //+2：最大值n就有n+1个刻度，在加上y轴多一个单位长度，为了好看，so+2
        yAxis.setLabelCount(count, false);
        //设置从Y轴值
        yAxis.setAxisMinimum(0f);
        //+1:y轴多一个单位长度，为了好看
        yAxis.setAxisMaximum(maximun);
        yAxis.setTextColor(Color.parseColor("#999999"));
        //y轴
        if(valueFormatter != null) {
            yAxis.setValueFormatter(valueFormatter);
        }

        return yAxis;
    }

    public static LineDataSet createLine(float x, float y , int lineColor) {
        //一个LineDataSet就是一条线
        List<Entry> entries = new ArrayList<>();
        entries.add(new Entry (x, y));
        LineDataSet lineDataSet = new LineDataSet(entries, "");
        //线颜色
        lineDataSet.setColor(lineColor);
        lineDataSet.setHighlightEnabled(false);
        //线宽度
        lineDataSet.setLineWidth(1.6f);
        //不显示圆点
        lineDataSet.setDrawCircles(true);
        lineDataSet.setCircleColor(lineColor);
        //线条平滑
        lineDataSet.setMode(LineDataSet.Mode.HORIZONTAL_BEZIER);
        //设置折线图填充
//        lineDataSet.setDrawFilled(true);
        return lineDataSet;
    }

    public static LineDataSet createLine( List<Entry> entries , int lineColor) {
        //一个LineDataSet就是一条线
        LineDataSet lineDataSet = new LineDataSet(entries, "");
        //线颜色
        lineDataSet.setColor(lineColor);
        lineDataSet.setHighlightEnabled(false);
        //线宽度
        lineDataSet.setLineWidth(1.6f);
        //不显示圆点
        lineDataSet.setDrawCircles(true);
        lineDataSet.setDrawCircleHole(false);
        lineDataSet.setCircleColor(lineColor);
        //线条平滑
//        lineDataSet.setMode(LineDataSet.Mode.LINEAR);
        //设置折线图填充
//        lineDataSet.setDrawFilled(true);
        return lineDataSet;
    }

 /*   public static LineDataSet createLine(List<Float> list, int lineColor) {
        //设置数据
        List<Entry> entries = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            entries.add(new Entry (i + 1, (float) list.get(i)));
        }
        //一个LineDataSet就是一条线
        LineDataSet lineDataSet = new LineDataSet(entries, "");
        //线颜色
        lineDataSet.setColor(lineColor);
        lineDataSet.setHighlightEnabled(false);
        //线宽度
        lineDataSet.setLineWidth(1.6f);
        //不显示圆点
        lineDataSet.setDrawCircles(true);
        lineDataSet.setCircleColor(lineColor);
        //线条平滑
        lineDataSet.setMode(LineDataSet.Mode.HORIZONTAL_BEZIER);
        //设置折线图填充
//        lineDataSet.setDrawFilled(true);
        return lineDataSet;
    }*/

    /**
     * 初始化曲线图表
     *
     */
    public static void refresh(LineChart lineChart, LineDataSet... lineDataSets) {
        if(lineDataSets == null || lineDataSets.length == 0) {
            lineChart.setData(null);
            lineChart.setNoDataText("暂无数据");//没有数据时显示的文字
        } else {
            LineData data = new LineData(lineDataSets);
            //折线图不显示数值
            data.setDrawValues(false);
            //设置数据
            lineChart.setData(data);
        }

        //图标刷新
        lineChart.invalidate();
    }

//    /**
//     * 初始化曲线图表
//     *
//     * @param list 数据集
//     */
//    public static void refresh(LineChart lineChart, final List<Float> list) {
//        //设置数据
//        List<Entry> entries = new ArrayList<>();
//        for (int i = 0; i < list.size(); i++) {
//            entries.add(new Entry (i + 1, (float) list.get(i)));
//        }
//        //一个LineDataSet就是一条线
//        LineDataSet lineDataSet = new LineDataSet(entries, "");
//        //线颜色
//        lineDataSet.setColor(Color.parseColor("#09C3BE"));
//        lineDataSet.setHighlightEnabled(false);
//        //线宽度
//        lineDataSet.setLineWidth(1.6f);
//        //不显示圆点
//        lineDataSet.setDrawCircles(true);
//        lineDataSet.setCircleColor(Color.parseColor("#09C3BE"));
//        //线条平滑
//        lineDataSet.setMode(LineDataSet.Mode.HORIZONTAL_BEZIER);
//        //设置折线图填充
////        lineDataSet.setDrawFilled(true);
//        LineData data = new LineData(lineDataSet);
//
//        //折线图不显示数值
//        data.setDrawValues(false);
//
//        //设置数据
//        lineChart.setData(data);
//        //图标刷新
//        lineChart.invalidate();
//    }
}
